-- Editor key mappings =========================================================

-- vim.api.nvim_set_keymap('n', '<C-M-l>', ':tabnext<CR>', {noremap = true, silent = true})
-- vim.api.nvim_set_keymap('n', '<C-M-j>', ':tabprevious<CR>', {noremap = true, silent = true})

-- Move in insert mode
vim.api.nvim_set_keymap("i", "<M-k>", "<UP>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("i", "<M-j>", "<DOWN>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("i", "<M-h>", "<LEFT>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("i", "<M-l>", "<RIGHT>", { noremap = true, silent = true })

-- Move between split windows
vim.api.nvim_set_keymap("n", "<C-k>", "<C-w><UP>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-j>", "<C-w><DOWN>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-h>", "<C-w><LEFT>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-l>", "<C-w><RIGHT>", { noremap = true, silent = true })
-- Move split windows
vim.api.nvim_set_keymap("n", "<C-M-k>", "<C-w>K", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-M-j>", "<C-w>J", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-M-h>", "<C-w>H", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<C-M-l>", "<C-w>L", { noremap = true, silent = true })
-- Resize split windows
vim.api.nvim_set_keymap("n", "<M-k>", "<C-w>+", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<M-j>", "<C-w>-", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<M-h>", "<C-w><", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<M-l>", "<C-w>>", { noremap = true, silent = true })

vim.api.nvim_set_keymap("n", "G", "gg", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "gg", "G", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "G", "gg", { noremap = true, silent = true })
vim.api.nvim_set_keymap("v", "gg", "G", { noremap = true, silent = true })

vim.api.nvim_set_keymap("", "<C-s>", ":w<cr>", { noremap = true, silent = true })

-- Plugins key mappings ========================================================

-- buffer delete
vim.api.nvim_set_keymap("n", "<M-q>", ":Bdelete<CR>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<M-Q>", ":Bdelete!<CR>", { noremap = true, silent = true })

-- Nvim Tree
vim.api.nvim_set_keymap("", "<F2>", ":NvimTreeToggle<CR>", { noremap = true, silent = true })

-- Buffer Line
-- In which key

-- Lsp mappings
-- In which key
vim.api.nvim_set_keymap("n", "K", "<cmd>Lspsaga hover_doc<cr>", { noremap = true, silent = true })
-- vim.api.nvim_set_keymap('n', '<C-u>', '<cmd>lua require("lspsaga.action").smart_scroll_with_saga(-1, "<c-u>")<cr>', {noremap = true, silent = true})
-- vim.api.nvim_set_keymap('n', '<C-d>', '<cmd>lua require("lspsaga.action").smart_scroll_with_saga(1, "<c-d>")<cr>', {noremap = true, silent = true})

function compileCurrentFile()
	if vim.bo.filetype == "cpp" then
		print(vim.api.nvim_exec("!g++ -g -std=c++11 %:p -o %<", true))
	end
end

vim.api.nvim_set_keymap("n", "<F8>", "<cmd>lua compileCurrentFile()<cr>", { noremap = true })
